from Crypto.Util.number import *
import libnum
import os
import uuid

flag = "flag{" + str(uuid.uuid4()) + "}"
print(flag)
p = getPrime(1024)
q = getPrime(1024)
n = p*q
g = n+1
m = bytes_to_long(flag.encode()+os.urandom(80))
assert m < n
c=(pow(g,p,n*n)*pow(m,n,n*n))%(n*n)
print("c="+str(c))
print("n="+str(n))
print("hint="+str(pow(m,n,n*n)))
c=905172784418873713732700558989181996325888648419514448597522212684278398492968953662897010162459720878338826781745670048648503779257335410151406677417672179943629405238436257761900874779751323685645487171118941725247670177508835630481691386000018298279603171853869779484660079539212620112828361078884675672318207140662942807891978333217323903614109508047283464815109670669749578130718034005367412888820840187084195735110169860263051517794259176586440054603489419713260249482251876820886895812965753980629409003368980726873547620586673084434595344022526350554435683286970476385148137233032328326069460609647990748281965659109823359063464740041165085947578112934084444546578892243586755065620072226406559570695996411425392411720235577924087686144818222754504180459012372066335490682513709248974145951032855864423898924290178930441424519435513069223761613624946714386744074724873963316031171129368661130034527289076196976788125801482545219357263063182186736412009825867346742491995907489707140750618968084303409140459259029941006631812240535300916608964267286900303263889610322380698382293583754970203768704399696974094327426470370167364635490705190916409115979541420542043314273903341551693854266457846024456417034657152355702425585484
n=31016237680452528704873191037134067101278463443982527817436364102617348902532256530861676448201075746827834542956506366698825423422483893189352329256671487874082156052214641945947096606313380306737789848779237364845323351377115674248947766919676433584677299950176564986961205465375287101064714101688614722710223640975579844338149091130387005331087496684778954404065614342428013697081893585722086127239864386794351634597573229819179116430105000422883664131016949507449532791494372407636576472748173367100782468874221920267631198486913451692621404826280274339031449224108911511601369385962449647906065004132890110315191
hint=218207395768478557471199767194094043876724592138588774570908990468428950605149285379792082880818082732758456157750106025376469170078549528685829802378925626144504311460262428580920405672341673977468406004167108795444419994568528664898153779169619242440508681759186017153711527661283166710768331441106506554151407089758879246657121059234157255083964973037628491442405875716725032650227392405274334487258752469294042631778616110618699764229701945343859239888793305620960480463538257644020487517361371098883002526539902459754433571144717491292105967141861141822042443693629090462448712500532607336928502017089154250653979878646143264568658353591859972526675416599548031535473192600081383998056552022089590117980379324695272326190935495337967240049776307127889831165855695782293908854273381915760832267426532554157982310401664106552217062642147611812863526763087374157217764323065841672272539622812472535192439927792375314310035581298527907756661627438862033009575874759150646763139825124510422557834829003090593326781196144175844093709071945019402686845259582266824033566943227461354561480721320603363363818423382582406857246764822653289982541708423069636397274899545161162174930897008316838239371094314997267623578517028431314845245239
